<?php
/*
 COMMENT.INC.PHP by martin $ 2009/12/01 03:38:52
*/
if(trim(MAILTO) != ''){
 include_once('mail.inc.php');
}

if(v_('mode')=='edit_comment' || v_('mode')=='res_comment'){
 $DIVISION['style'] .= ' <link rel="stylesheet" href="'.$theme.'" type="text/css" />';
}
$ref = !empty($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';

function comment_form($tid,$form_only=0,$edit_mode=0,$res_mode=0,$ec_id='',$ec_name='',$ec_col='',$ec_com='',$ec_url='',$ec_ip='',$ec_mail='', $h_com=0){
 global $DIVISION, $UID, $mode, $_SMILIES, $cc_name, $cc_col, $cc_url, $hd, $theme_dir, $_self;
 $tid = isset($tid) ? $tid : $UID; // ターゲットID
 $tdate = date('Ymd', substr($tid, 0, 10));
 $c_name = !empty($ec_name) ? $ec_name : (isset($cc_name) ? $cc_name : '');
 $c_url = !empty($ec_url) ? $ec_url : (strstr($cc_url,'http://') ? $cc_url : 'http://');
 $c_col = !empty($ec_col) ? $ec_col : '';
 $c_com = !empty($ec_com) ? $ec_com : '';
 $c_id = !empty($ec_id) ? $ec_id : time();
 $c_ip = !empty($ec_ip) ? $ec_ip : '';
 $c_mail = !empty($ec_mail) ? $ec_mail : '';
 $CID = time();
 $allowPing = preg_grep("{^$tid\|}", file(log_($tid))); if($allowPing) list(,,,,,,$allowPing) = explode('|', array_shift($allowPing));
 if(ACCEPT_ALNUMONLY == FALSE && !ADMIN){ // for HIRAPTCHA
  $string = '';
  $oArray = array(0,1,2,3,4,5,6,7,8,9);
  for ($i = 0; $i < 4; $i++){
   $r = rand(0, 9 - $i); $a = array_splice($oArray, $r, 1); $string .= $a[0];
  }
  $imgstr = my_encrypt($string.'_'.$CID);
 }
 $apres = ($mode == 'trackback') ? '' : $tid;
 $_hd = checkHoliday($tdate) ? '&nbsp;<span class="holiday">'.$hd->holidays[$tdate].'</span>' : '';
 $body = ($form_only) ? NL : show_box($tid).NL; $body_h = '';
 if($allowPing){
  $body_h .= '<p id="trackback" class="comment-intro">この記事に対する TrackBack URL: <input type="text" class="txt" size="40" value="'.ROOT_PATH.'trackback.php?UID='.$tid.'" onfocus="this.select();" /></p>'.(TB_CHECK_REFERRED ? '
 <p class="trackback-alert">設定によりTB元のページに、こちらの記事への言及（この記事へのリンク）がなければ、TB受付不可となりますのであらかじめご了承下さい。</p>
 ' : '');
 }
 $body_h .= '<p class="comment-intro">コメントをどうぞ。'
  .(ACCEPT_ANONYMITY?' 名前と':' <span class="alert">名前(ペンネーム)</span>'.(ACCEPT_ALNUMONLY ? '' : (ADMIN ? '' : 'と画像認証の<span class="alert">ひらがな4文字</span>')).'は必須で、').'ウェブサイトURLはオプションです。</p>'.NL;
 if($edit_mode==TRUE){
  $body_h = '<p class="comment-intro">選択したコメントを編集します。 →<a href="index.php?UID='.$tid.'">[この記事に戻る]</a></p>'.NL;
 }
 if($res_mode==TRUE){
  list(,$c_n,,$c_cm,,,$c_m,$hidden) = explode('|', get_cmt($tid,$ec_id));
  $c_cm = str_replace('`', '<br />', str_replace('``', '`', $c_cm));
  $body_h = '<div class="comment-quoted" style="padding:.5em; border:solid 1px #aaa; background: rgb(249,249,249);"><p><img src="'.$theme_dir.'Images/owner-comment.png" alt="Comment" /> '.$c_n.'さんは書きました'.($c_m!=''?' <strong title="'.my_decrypt($c_m).'">[メルアド登録あり]</strong>'.NL:NL).($hidden ? ' <span style="color:crimson;">[非公開のコメントです]</span>' : '').'</p><p id="quoted-comment" style="margin: .5em;">'.$c_cm.'</p></div>'.NL;
  $body_h .= '<p class="center">
   <a class="quote-button" href="javascript:void(my_quote());" title="引用します">
    <img src="Images/quote.png" width="54" height="18" />
   </a>
   <span>（マウスで引用文を部分選択すれば，その部分が引用されます）</span>
  </p>
  <h3>上のコメントに返答</h3>
  ';
 }
 if(ADMIN != TRUE){
  $author = ONAME;
  $mailer = '<p class="comment-mailback">
  <label for="c_mail">メールアドレスを入力しておくと '.$author.' がレスをした際に通知します (<kbd>M</kbd>):</label>
  <input type="text" name="com_back" size="32" value="'.$c_mail.'" class="txt" accesskey="M" id="c_mail" title="メルアドは暗号化されます" />
  </p>';
 } else $mailer = '';
 $forAdmin = (ADMIN && $res_mode==1) ? ($hidden ? ' <input type="hidden" name="non-disclosure" id="non-disclosure" value="1" /><p class="info">非公開のコメントに対するレスなので、この投稿も非公開となります。</p>' : ' <input type="hidden" name="non-disclosure" id="non-disclosure" value="0" />') :
  '<p class="comment-nondisclosure">
  <input type="checkbox" '.($h_com ? 'checked="checked"' : '').'name="non-disclosure" id="non-disclosure" value="1" class="checkbox" title=" 非公開 " />
  <label for="non-disclosure" title="一般読者には表示されません">チェックしておくと、コメントは記事の投稿者・管理者のみに表示されます (<kbd>H</kbd>)</label>
  <span id="cookieEnabled" class="alert" style="display:none;margin: 1em; text-align:left;">
  '.(isset($_COOKIE['PPBLOG_UCONF']) ? '' : 'この非公開機能を使うにはブラウザのクッキーが有効である必要があります。<br />
  また、').'メールアドレスを入力していれば、管理者 '.ONAME.' からのレスを確実に知ることができます。</span>
  </p>';
 $body = '
 <div id="comment'.$apres.'"><form id="comment" method="post" class="comment-form" action="index.php">
 '.$body_h.'
  <div class="hidden">
   <input type="hidden" name="hint" id="hint" value="あいうえお眉幅" />
   <input type="hidden" name="UID" value="'.$tid.'" id="UID" />
   <input type="hidden" name="ADMIN" id="ADMIN" value="'.(ADMIN?'1':'0').'" />
   <input type="hidden" name="ACCEPT_ANONYMITY" id="ACCEPT_ANONYMITY" value="'.(ACCEPT_ANONYMITY?'1':'0').'" />
   <input type="hidden" name="CID" id="CID" value="'.(($edit_mode||$res_mode)?$c_id:$CID).'" />
   <input type="hidden" name="edit_mode" id="edit_mode" value="'.$edit_mode.'" />
   <input type="hidden" name="res_mode" id="res_mode" value="'.$res_mode.'" />
   <input type="hidden" name="mode" id="mode" value="comment" />
   <input type="hidden" name="cip" id="cip" value="'.$c_ip.'" />'.( (ADMIN && $res_mode) ? '
   <script type="text/javascript">/*<![CDATA[*/
    my_quote = function(){
     var txt = "";
     if(d.selection){
      txt=d.selection.createRange().duplicate().text
     } else if(window.getSelection){
      txt = window.getSelection();
     }
     if(txt==""){
      d.getElementById("c_com").value +=
       "[q]"+d.getElementById("quoted-comment").innerHTML.replace(/<br ?\/?>/ig, "\r\n")+"[/q]";
     } else d.getElementById("c_com").value += "[q]"+txt+"[/q]";
    }
   /*]]>*/</script>':'').'
   <script type="text/javascript">/*<![CDATA[*/
    oParts.loadScript(baseURL+"ajax.php?type=info"); oParts.loadScript(baseURL+"ajax.php?type=json"); oParts.loadScript(baseURL+"js/comment.js");
   /*]]>*/</script>
  </div>
  <div class="comment-inputarea">
  '.(ADMIN==TRUE?'
  <label for="timestamp" class="help" title="チェックすると，変更した日付で投稿できます。">日付の修正</label>
  <input type="checkbox" class="checkbox" name="mod_date" value="1" id="timestamp"  /> 
  <input type="text" class="alnum" name="Y" id="Y" value="'.date('Y', $c_id).'" size="4" maxlength="4" /> 年
  <input type="text" class="alnum" name="m" id="m" value="'.date('m', $c_id).'" size="2" maxlength="2" /> 月
  <input type="text" class="alnum" name="d" id="d" value="'.date('d', $c_id).'" size="2" maxlength="2" /> 日
  <input type="text" class="alnum" name="H" id="H" value="'.date('H', $c_id).'" size="2" maxlength="2" /> 時
  <input type="text" class="alnum" name="i" id="i" value="'.date('i', $c_id).'" size="2" maxlength="2" /> 分
  <input type="text" class="alnum" name="s" id="s" value="'.date('s', $c_id).'" size="2" maxlength="2" /> 秒&nbsp;
  <input type="image" class="time-now" src="button/clock.png" alt="Now" onclick="var t = new Date();
    o(\'#Y\').value(t.getFullYear()); o(\'#m\').value(t.getMonth()+1); o(\'#d\').value(t.getDate());
    o(\'#H\').value(t.getHours()); o(\'#i\').value(t.getMinutes()); o(\'#s\').value(t.getSeconds());
    o(\'#timestamp\').$.checked = 1;
    return false;" title="現在の時刻をセット" />
  <br />
  ':'').'
   <p><label for="c_name">名前 (<kbd>N</kbd>):</label>
    <input type="text" name="c_name" id="c_name" accesskey="N" value="'.$c_name.'" class="txt" /></p>
   '.(ACCEPT_ALNUMONLY ? '' : (ADMIN ? '' : '<p><label for="Hiraptcha" title="コメントスパム対策">画像認証 (<kbd>I</kbd>):</label>
   <input type="text" name="Hiraptcha" id="Hiraptcha" value="右の４文字を入力して下さい" size="30" accesskey="I" class="txt" />
   <img src="./modules/hiraptcha.inc.php?aim='.$imgstr.'" width="80" height="20" alt="" title="画像認証：HIRAPTCHA" />
   <input type="hidden" name="HiraptchaEnc" id="HiraptchaEnc" value="'.$imgstr.'" /></p>')).'
   <p><label for="c_color">文字色 (<kbd>C</kbd>):</label> '.colorForm($c_col).'</p>
   <p>ウェブサイト (<kbd>U</kbd>): <input type="text" name="c_url" accesskey="U" value="'.$c_url.'" size="40" class="txt" /></p>
   <p class="info">タグは使えません。http://･･･ は自動的にリンク表示となります</p>
  </div>
  <div style="text-align:left;">
  ';
  foreach ($_SMILIES as $sym=>$path){
   $body .= ''.preg_replace('{/>}', 'onclick="Caret.set(\''.$sym.'\');" />', $path).NL;
  }
  $body .= '
  </div>
  <div>
   <textarea name="c_com" id="c_com" class="comment-textarea" cols="70" rows="10">'.$c_com.'</textarea>
  </div>
  '.$mailer.'
  '.$forAdmin.'
  <div id="comment-previewarea"></div>
  <div class="comment-submit">
   <button title=" 内容投稿の確認 " type="button" id="preview-button"> プレビュー </button>&nbsp;&nbsp;
   <button title=" この内容で投稿 " type="submit" id="submit-button"> コメント送信 </button>&nbsp;&nbsp;'.
   ($edit_mode==TRUE?'':'<label for="c_cookie" title="名前や文字色・URLをクッキーに入れます"><strong>Cookie</strong>(<kbd>K</kbd>):</label>
    <input type="checkbox" value="1" name="c_cookie" id="c_cookie" accesskey="K" checked="checked" />').'
   <p class="jump" title="このページのトップへ"><a title="コメントフォームを閉じます" href="#UID'.$tid.'" onclick="o(\'#comment'.$tid.'\').hide();">[X]</a> <a href="#weblog">[Top &uarr;]</a></p>
  </div>
 </form></div>
';
 return $body;
}

function catch_comment($mode){
 global $mb, $ref, $theme, $displayMode, $_asort, $_self, $DIVISION;
 $UID = v_('UID');
 $CID = v_('CID');
 $cc_name = '';
 if(strpos($UID, 'd')) _header('index.php?UID='.$UID);
 $c_com = mb_convert(p_('c_com'));     // 文の整形
 if(p_('c_cookie')!='' || p_('non-disclosure')==1){
  $cc_name = p_('c_name');
  $cc_col = p_('c_color');
  $cc_url = p_('c_url');
 }
 if(p_('cip')!=''){
  $ip = p_('cip');
 } else {
  $ip = ($ip=$_SERVER['REMOTE_ADDR']) ? $ip : '0';
 }
 if($cc_name != ''){ // クッキーの上書き
  setcookie('PPBLOG_UCONF', $cc_name.",$cc_url,$cc_col,$theme,$displayMode,$_asort", time()+30*24*3600);
 }

 $ip = preg_match('{^[0-9\.]+$}', $ip) ? $ip : '0';
 $EDT_MODE = p_('edit_mode');
 $RES_MODE = p_('res_mode');
 $d = opendir (CMT_DIR);
 while ($file = readdir ($d)) {
  if(strstr($file, "$UID")) $target = CMT_DIR.$file; 
 }
 closedir ($d);
 if(!isset($target)){
  $target = CMT_DIR.$UID.EXT;
  mk_fl($target);
  $LINES = file(log_($UID));
  list($uid,$category,$title,) = explode('|', $LINES[get_article_index($UID, $LINES)]);
  if($UID==$uid) rewrite($target, $uid.'|'.$category.'|'.$title.'|1|0'.NL); // コメントログの1行目は親情報
  $total = $nondisc = 0;
  $LINES = file($target);
 } else {
  $LINES = file($target);
  if(empty($LINES)){ unlink(PATH.$target); return;}
  list($uid,$category,$title,) = explode('|', $LINES[0]);
 }
 $count = count($LINES);
 $created = (isset($total) && $total==0) ? TRUE : FALSE;
 if(!is_array($LINES)) return;
 $c_com = preg_replace('{&lt;a .*?href=&quot;(.+?)&quot;.*?&gt;(.+?)&lt;/a&gt;}', '\\1', $c_com);
 $com_back_mail = preg_match("{^[0-9a-z\.\-_!#$%&]+?@[0-9a-z\.\-_!#$%&]+$}i", p_('com_back')) ? my_encrypt(p_('com_back')) : '';

 $c_name = p_('c_name')=='' ? (ACCEPT_ANONYMITY==TRUE?'NONAME':'') : p_('c_name');
 $c_name = mb_convert($c_name);
 $h_com = p_('non-disclosure')==1 ? 1 : 0;
 if($c_name == ONAME && ADMIN != TRUE){
  page_back();
  return $DIVISION['header'] .= '<p class="alert">管理者と同じ名前は使えません。</p>';
 }
 $c_url = (p_('c_url')==''||p_('c_url')=='http://') ? '' : p_('c_url');
 
 if( p_('mod_date') ){ // 時刻の修正時
  $_Y = $mb ? sprintf('%04d', mb_convert_kana(p_('Y'), "n", ENCODE)) : sprintf('%04d', p_('Y'));
  $_m = $mb ? sprintf('%02d', mb_convert_kana(p_('m'), "n", ENCODE)) : sprintf('%02d', p_('m'));
  $_d = $mb ? sprintf('%02d', mb_convert_kana(p_('d'), "n", ENCODE)) : sprintf("%02d", p_('d'));
  $_H = $mb ? sprintf('%02d', mb_convert_kana(p_('H'), "n", ENCODE)) : sprintf('%02d', p_('H'));
  $_i = $mb ? sprintf('%02d', mb_convert_kana(p_('i'), "n", ENCODE)) : sprintf('%02d', p_('i'));
  $_s = $mb ? sprintf('%02d', mb_convert_kana(p_('s'), "n", ENCODE)) : sprintf('%02d', p_('s'));
  $_CID = strtotime($_Y.'-'.$_m.'-'.$_d.' '.$_H.':'.$_i.':'.$_s);
 }
 if(strpos($title, ',')){
  list($entry, $pm_title) = explode(',', $title); $uid = substr($uid, 0, 10);
  $pm_link = MODE_STATIC ? date('Ym-', $uid).$pm_title.EXT_STATIC : $_self.'?UID='.$uid;
 } else $pm_link = MODE_STATIC ? $uid.EXT_STATIC : $_self.'?UID='.$uid;
 $pm_link = $pm_link.'#comment'.$uid;
 $retry = NL.'<br /><p>記入した以下のコメント内容をコピペして<a href="'.$pm_link.'">再度トライ</a>して下さい。</p>
  <textarea>'.$c_com.'</textarea>'.NL;
 switch ($mode){
  case 'comment' :
   if(test_ip($_SERVER["REMOTE_ADDR"]) > 0) _header('index.php?UID='.$UID);
   if(ACCEPT_ANONYMITY != TRUE && $c_name==''){
    if($created || $count == 1) unlink($target);
    _xhtml('', '<p>名前が記入されてなかったようです。</p>'.$retry);
   }
   if($c_com==''){
    if($created || $count == 1) unlink($target);
    _xhtml(refresh_page($ref, 1500, 1), '<p>コメントが空のようです。</p>'.NL);
   }
   if(ACCEPT_ALNUMONLY != TRUE){
    $jp_pattern = '/[\xe0-\xef][\x80-\xbf]{2}/x'; # UTF-8
    $_c_com = preg_replace('{[.+?/]}', '', $c_com);
    if(($HirEnc = p_('HiraptchaEnc')) != ''){
     $HirArray = array(0=>'あ','か','さ','た','な','は','ま','や','ら','わ');
     $Hir = p_('Hiraptcha'); $HirDec = '';
     list($strDec, $_CID) = explode('_', my_decrypt($HirEnc));
     for($i = 0; $i < 4; $i++) $HirDec .= $HirArray[$strDec[$i]];
     if($Hir != $HirDec){
      if($created || $count == 1) unlink($target);
      _xhtml('', '<p>画像認証文字が違った様です...'.$retry);
     }
    }
    if(!preg_match($jp_pattern, trim($_c_com)) || preg_match('{^[\x20-\x7E]+$}', trim($_c_com))){ // # ひらがな なし
     if($created || $count == 1) unlink(PATH.$target);
     _xhtml(refresh_page($ref, 1500, 1), '<p>Sorry, Comment Needs Hiragana...</p>'.NL);
    }
   }
   if(strpos($c_com, '[/url]')){
    if($created || $count == 1) unlink($target);
    _header('index.php'); # トップページに飛ばす
   }
   if(ACCEPT_NGWORD==FALSE && ADMIN===FALSE){ # NGワード拒否
    $ngwords_ini = OD.'ngwords.ini.php';
    $blacklist_ini = OD.'blacklist.ini.php';
    
    if(is_file($ngwords_ini)){
     include_once($ngwords_ini); # get::NG_WORDS
     $NG = array();
     foreach($NG_WORDS as $ng){
      if(stristr($c_com, $ng)!==FALSE) $NG[] = "$ip|$c_com|hit word:$ng";
     }
     if(!empty($NG)){ # NGワードにヒット
      if(!is_file($blacklist_ini)){
       $BLACK_LIST = array();
       rewrite_ini($blacklist_ini, '', '$BLACK_LIST'); # iniファイルの作成
      } else {
       include_once($blacklist_ini); # get::BLACK_LIST
      }
      $BLACK_LIST[] = implode(',', $NG);
      rewrite_ini($blacklist_ini, $BLACK_LIST);
      if($created || $count == 1) unlink($target);
      _header('index.php'); # トップページに飛ばす
     }
    }
   }
    // コメントログのフォーマット
   $logFormat = (isset($_CID)?$_CID:($RES_MODE?time():$CID)).'|'.$c_name.'|'.p_('c_color').'|'.$c_com.'|'.$ip.'|'.$c_url.'|'.$com_back_mail.'|'.$h_com.'|'.NL;
   if($EDT_MODE==TRUE){
    foreach ($LINES as $i => $line){
     if(strstr($line, "$CID|")){
      array_splice ($LINES, $i, 1, $logFormat);
      break;
     }
    }
    $total = sizeof($LINES) - 1;
    $nondisc = array();
    foreach ($LINES as $line){
     if(strpos($line, '|1|'.NL)) $nondisc[] = $line;
    }
    $nondisc = sizeof($nondisc);
    $LINES[0] = "$uid|$category|$title|$total|$nondisc";                         // Not counted
    rewrite($target, $LINES);
   } elseif($RES_MODE==TRUE) {
    foreach ($LINES as $i => $line){
     if(strstr($line, "$CID|")){
      list(,,,,,,$_mail,) = explode('|', $line);
      array_splice ($LINES, $i+1, 0, $logFormat); // ターゲットの次に挿入
      break;
     }
    }
    $total = sizeof($LINES) - 1;
    $nondisc = array();
    foreach ($LINES as $line){
     if(strpos($line, '|1|'.NL)) $nondisc[] = $line;
    }
    $nondisc = sizeof($nondisc);
    $LINES[0] = "$uid|$category|$title|$total|$nondisc"; // Counted
    rewrite($target, $LINES);
    $_mail = my_decrypt($_mail);
    if(!empty($_mail) && preg_match("{^[0-9a-z\.\-\_!#$%&]+?@[0-9a-z\.\-\_!#$%&]+$}i", $_mail)){ // 有効なメルアドが設定してあれば送信
     $comment_body = NL.ONAME.'さんがあなたのコメントに返答しましたっ！'.NL.NL.ROOT_PATH.'index.php?UID='.$UID.NL.NL
                   . '　エントリータイトル：'.$title.NL
                   . '　　　エントリー日時：'.date('Y-m-d H:i:s', $UID).NL
                   . '　　　　　カテゴリー：'.$category.NL.NL
                   . '以下は新しく付いたコメントです。'.NL.NL
                   . '　　　　コメント日時：'.date('Y-m-d H:i:s', $CID).NL.NL
                   . $c_com;
     @send_jp_mail('返事がつきましたっ！', $comment_body, '', $_mail);
     $mailBack = 1;
    }
   } else { // 一般投稿

    foreach ($LINES as $i => $line){
     if(strstr($line, "$CID|")){
      _xhtml('<h3>::2重投稿のようです::</h3>');
     }
    }
    array_push($LINES, $logFormat);

    $total = sizeof($LINES) - 1;
    $nondisc = array();
    foreach ($LINES as $line){
     if(preg_match('{\|1\|$}', rtrim($line))) $nondisc[] = $line;
    }
    $nondisc = sizeof($nondisc);
    $LINES[0] = "$uid|$category|$title|$total|$nondisc";
    rewrite($target, $LINES);
    $cmd_time = strrev(time());
    $cmd_time = my_encrypt(base_convert($cmd_time, 10, 2));
    $comment_body = NL.$c_name.'さんがコメントしたようです。'.($com_back_mail==''?'':'[メルアド登録あり！]').($h_com?'[非公開コメント！]':'').NL.NL
                 . '　　　　　エントリー：'.ROOT_PATH.'index.php?UID='.$UID.NL
                 . '　エントリータイトル：'.$title.NL
                 . '　　　エントリー日時：'.date('Y-m-d H:i:s', $UID).NL
                 . '　　　　　カテゴリー：'.$category.NL.NL
                 . '　　　　コメント日時：'.date('Y-m-d H:i:s', $CID).NL.NL
                 . '以下は新しく付いたコメントです。'.NL.NL
                 . $c_com.NL.NL.'----'.NL
                 . '以下のリンクから直接コメント返信画面にアクセス出来ます。'.NL
                 . ROOT_PATH.'admin.php?mode=res_comment&UID='.$UID.'&CID='.$CID.'&CMD='.my_encrypt(sha1(OPASS).$cmd_time);
    if(trim(MAILTO)!='' && $c_name != ONAME){
     @send_jp_mail('ppBlogコメントエージェント', $comment_body, '', MAILTO);
    }
   } // end of else
   update_cache(array('recent_comments'));
   $to = 'index.php?UID='.$UID.'#CID'.$CID;
   $cap = '';
   if($EDT_MODE) $cap = '編集';
   if($RES_MODE) $cap = 'レス';
   
   _xhtml(refresh_page($to, 1500, 1).'<p>コメント'.$cap.' 完 了！ すぐにページを更新します</p>',($cap==''?'Thank you for your comment!':($RES_MODE && isset($mailBack) ? '返信お知らせメールも送りました:)' : '')));
  break;
 
  case 'res_comment' :
   if(ADMIN != TRUE) _header('index.php');
   return $DIVISION['body'] .= comment_form($UID,TRUE,0,1,$CID);
  break;

  case 'edit_comment' :
   if(ADMIN != TRUE) _header('index.php');
   foreach ($LINES as $i => $line){
    if(strstr($line, "$CID|")){
     list($cid, $cname, $ccol, $ccom,$cip,$curl,$cmail,$h_com) = explode('|', $line);
     $curl = empty($curl) ? ' ' : $curl;
     $cmail = empty($cmail) ? '' : my_decrypt($cmail);
     return $DIVISION['body'] .= comment_form($UID,1,1,0,$cid,$cname,$ccol,str_replace('`',NL,$ccom),$curl,$cip,$cmail,$h_com);
     break;
    }
   }
  break;
  
  case 'delete_comment' :
   checkADMIN();
   foreach ($LINES as $i => $line){
    if(strstr($line,"$CID|")){
     array_splice ($LINES, $i, 1);
     break;
    }
   }
   list($uid,$category,$title,) = explode('|', $LINES[0]);
   $total = sizeof($LINES) - 1;
   $nondisc = array();
   foreach ($LINES as $line){
    if(preg_match('{\|1\|$}', rtrim($line))) $nondisc[] = $line;
   }
   $nondisc = sizeof($nondisc);
   $LINES[0] = "$uid|$category|$title|$total|$nondisc";
   if(empty($LINES) || $total==0){
    unlink($target);
   } else rewrite($target, $LINES);
   update_cache(array('recent_comments'));
   $to = strpos($ref, 'index.php') ? 'index.php?UID='.$UID : 'admin.php?mode=article&sub=comment&UID='.$UID;
   _xhtml(refresh_page($to, 1500, 1).'<p>選択したコメントを削除しました。すぐにページを更新します</p>');
  break;
 }
}

function mb_convert($str){
 $encode = mb_detect_encoding(p_('hint'));
 $str = mb_convert_encoding($str, mb_internal_encoding(), $encode);
 return $str;
}

function colorForm($col=''){  // 文字色のセレクトメニュー
 global $cc_col;
 $colArray = array(
 "2f4f4f"=>"DarkSlateGray", "006400"=>"DarkGreen", "556b2f"=>"DarkOliveGreen", "6b8e23"=>"OliveDrab", "32cd32"=>"LimeGreen",
 "bdb76b"=>"DarkKahki", "191970"=>"MidinightBlue", "000080"=>"Navy", "5f9ea0"=>"CadetBlue", "6495ed"=>"CornflowerBlue",
 "800000"=>"Maroon", "b22222"=>"FireBrick", "cd5c5c"=>"IndianRed", "ff6347"=>"Tomato", "ff7f50"=>"Coral",
  "f08080"=>"LightCoral", "dc143c"=>"Crimson", "ff0000"=>"Red", "d2691e"=>"Chocolate", "b8860b"=>"DarkGoldenRod",
 "ffa500"=>"Orange", "000000"=>"Black"
 );
 $sel = !empty($col) ? $col : (!empty($cc_col) ? $cc_col : '2f4f4f');
 
 $s = "\n    <select name=\"c_color\" id=\"c_color\">\n";
 foreach($colArray as $key=>$value){
  $_sel = ($sel==$key) ? 'selected="selected"' : '';
  $s .= "      <option style=\"color:#$key\" value=\"$key\" $_sel>■ $value</option>\n";
 }
 $s .= "    </select>\n";
 return $s;
}

function get_cmt($uid, $cid){
 $target = get_cmt_array($uid);
 foreach ($target as $i=>$t){
  if(strstr($t, "$cid|")) return $t;
 }
 return '';
}

function _xhtml($body='', $msg=''){
 exit ('<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
                      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
 <title>ppBlog'.PPBLOG_VERSION.' TransMit</title>
 <meta http-equiv="Content-Type" content="text/html; charset='.ENCODE.'" />
 <meta name="generator" content="ppBlog '.PPBLOG_VERSION.'" />
 <meta http-equiv="content-style-type" content="text/css" />
 <meta http-equiv="content-script-type" content="text/javascript" />
 <style type="text/css">
  #TransMit {
   width: 540px; height: 180px; min-height: 180px; text-align: center; margin: 120px auto;
   border: 1px solid #555; background: url(Images/bg.png); padding-top: 30px;
   text-align: center;
  }
  body[id=mose] #TransMit { height: auto; }
  #Home { margin-top: 30px; }
  #Home img { border: none; }
  #Message { font: 600 11px Arial, sans-serif; color: crimson; margin-top: 7px;}
  textarea { width: 80%; height: auto; min-height: 3em; margin-bottom: 1em;}
  p { margin: .3em 1em;}
 </style>
</head>
<body id="mose">
<div id="TransMit">
'.$body.'
 <p id="Home">
  <a href="index.php"><img src="Images/home-large.png" width="48" height="48" alt="Top page" title="トップページへ" /></a>
 </p>
 <p id="Message">'.$msg.'</p>
</div>
</body>
</html>
');
}
?>
